
package com.chongchong.user.mapper;

import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.chongchong.user.entity.User;
import com.chongchong.user.excel.UserExcel;
import com.chongchong.user.vo.UserSuperVo;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * Mapper 接口
 *
 * @author
 */
public interface UserMapper extends BaseMapper<User> {

	/**
	 * 自定义分页
	 *
	 * @param page
	 * @param user
	 * @return
	 */
	List<User> selectUserPage(IPage page, User user);

	/**
	 * 获取用户
	 *
	 * @param tenantId
	 * @param account
	 * @param password
	 * @return
	 */
	User getUser(String tenantId, String account, String password);

	User getUserByAccount(String tenantId, String account);

	/**
	 * 获取角色名
	 *
	 * @param ids
	 * @return
	 */
	List<String> getRoleName(String[] ids);

	/**
	 *根据角色获取用户
	 * @param ids
	 * @return
	 */
	List<User> getUserByRoleIds(String [] ids);

	/**
	 * 获取角色别名
	 *
	 * @param ids
	 * @return
	 */
	List<String> getRoleAlias(String[] ids);

	/**
	 * 获取部门名
	 *
	 * @param ids
	 * @return
	 */
	List<String> getDeptName(String[] ids);

	/**
	 * 获取导出用户数据
	 *
	 * @param queryWrapper
	 * @return
	 */
	List<UserExcel> exportUser(@Param("ew") Wrapper<User> queryWrapper);

	/**根据当前用户查询所有上级用户信息
	* @description: 根据当前用户查询所有上级用户信息
	* @param: id
	* @return: UserSuperVo
	* @author wuning
	* @date: 2022/8/31 15:46
	*/
	UserSuperVo selectUserSuperList(Long id);

	/** 查询用户表获取用户相对应所有上级用户信息
	 * @description:  查询用户表获取用户相对应所有上级用户信息
	 * @param: id
	 * @return: UserSuperVo
	 * @author wuning
	 * @date: 2022/8/31 17:16
	 */
	List<UserSuperVo> selectAllUserSuperList();

	/**
	 * 查询库中所有表
	 *
	 * @param
	 * @return java.util.List<java.lang.String>
	 * @author wuning
	 * @date 2022/9/29 17:50
	 */
	List<String> selectTableNameList();
	/**
	 * 修改库中所有表的字符集utf8mb4 字段为 utf8mb4_0900_ai_ci
	 *
	 * @param
	 * @return java.util.List<java.lang.String>
	 * @author wuning
	 * @date 2022/9/29 17:50
	 */
	@Select("<script>"
		+ "ALTER TABLE ${tableName} CONVERT TO CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_0900_ai_ci'"
		+ "</script>")
	@InterceptorIgnore(tenantLine = "true")
	void updateTableNameUtf8mb4(@Param("tableName") String tableName);

}
